export const MimeType = {
  'application/pdf': 'file-pdf',
  'application/msword': 'file-word',
  'application/vnd.ms-powerpoint': 'file-powerpoint',
  'application/vnd.ms-excel': 'file-excel',
  'video/mpeg': 'file-video',
  'image/jpeg': 'file-image',
};

const initialState = {
  country: [], // 国家
  category: {
    accessorygroup: [], // 固定类移动类附件参数列表 //
    fixedabutmentgroup: [], // 固定类桥基参数列表
    fixedcolorgroup: [], // 固定类移动类颜色参数列表
    fixeddigitalgroup: [],
    fixedimplantgroup: [], // 固定类植入参数列表
    fixedmargingroup: [], // 固定类材料-边缘参数列表
    fixedmaterial: [], // 固定类材料参数列表
    fixedmetaltype: [], // 固定类材料-金属参数列表
    fixedmouldgroup: [], //
    fixedothergroup: [], // 固定类其他参数列表
    fixedponticgroup: [], // 固定类桥体参数列表 //
    fixedproduct: [], // 固定类产品列表
    remvarchproduct: [], // 移动类产品(牙床)列表
    remvmaterial: [], // 移动类金属列表
    remvothergroup: [], // 移动类其他参数列表
    remvprocedure: [], // 移动类工艺列表
    remvtoothproduct: [], //
    remvwaxgroup: [], // 移动类蜡咬合参数列表
  },
};

export const ProductType = {
  fixed: 'fixed',
  remvArch: 'remvArch',
};

export const ProductFieldToCategoryMapping = {
  fixed: {
    materials: 'fixedmaterial', // 材料
    metal_types: 'fixedmetaltype', // 金属
    margins: 'fixedmargingroup', // 边缘
    pontics: 'fixedponticgroup', // 桥体
    implants: 'fixedimplantgroup', // 植入
    abutments: 'fixedabutmentgroup', // 桥基
    colors: 'fixedcolorgroup', // 颜色
    others: 'fixedothergroup', // 其他
  },
  remvArch: {
    colors: 'fixedcolorgroup', // 颜色
    others: 'remvothergroup', // 其他
    metals: 'remvmaterial', // 金属
    waxes: 'remvwaxgroup', // 蜡咬合
  },
};

export const FixedParams = {
  materials: 'materials',
  metal_types: 'metal_types',
  margins: 'margins',
  pontics: 'pontics',
  implants: 'implants',
  abutments: 'abutments',
  colors: 'colors',
  others: 'others',
};

export const RemvArchParams = {
  metals: 'metals',
  waxes: 'waxes',
  colors: 'colors',
  others: 'others',
};

export const ParamNames = {
  materials: 'product.params.materials',
  metal_types: 'product.params.metals',
  metals: 'product.params.metals',
  margins: 'product.params.margins',
  pontics: 'product.params.pontics',
  implants: 'product.params.implants',
  abutments: 'product.params.abutments',
  colors: 'product.params.colors',
  others: 'product.params.others',
  waxes: 'product.params.waxes',
};

export const ProductParams = {
  fixed: {
    materials: 'materials',
    metal_types: 'metal_types',
    margins: 'margins',
    pontics: 'pontics',
    implants: 'implants',
    abutments: 'abutments',
    colors: 'colors',
    others: 'others',
  },
  remvArch: {
    metals: 'metals',
    waxes: 'waxes',
    colors: 'colors',
    others: 'others',
  },
};

export const PageOederProductParams = {
  fixed: {
    materials: 'fixed_material', // 材料
    metal_types: 'fixed_metal_type', // 金属
    margins: 'fixed_margin', // 边缘
    pontics: 'fixed_pontic', // 桥体
    implants: 'fixed_implant', // 植入
    abutments: 'fixed_abutment', // 桥基
    colors: 'fixed_color', // 颜色
    others: 'fixed_other', // 其他
  },
  remvArch: {
    metals: 'remv_arch_mat', // 金属
    waxes: 'remv_wax', // 蜡咬合
    colors: 'remv_color', // 颜色
    others: 'remv_other', // 其他
  },
};

export const ConstantActions = {
  CONSTANT_UPDATE: 'constant_update',
};

export function updateConstant(payload) {
  return {
    type: ConstantActions.CONSTANT_UPDATE,
    payload,
  };
}

export default function constant(state = initialState, action) {
  switch (action.type) {
    case ConstantActions.CONSTANT_UPDATE:
      return {...state, ...action.payload};
    default:
      return state;
  }
}
